const { type } = require("express/lib/response");
const mongoose = require("mongoose");

// 连接数据库
mongoose.connect("mongodb://localhost:27017/loseMg").then(() => {
  console.log("数据库连接成功")
})

// 丢失物品表,定义表格结构
const loseSchema = new mongoose.Schema({
  openid: {         //用户唯一id
    type: String
  },
  type: {         //发布类型
    type: Number
  },
  classify1: {    //物品类型1
    type: String
  },
  classify2: {    //物品类型2
    type: String
  },
  name: {         //物品名字
    type: String
  },
  date: {         //日期
    type: String
  },
  region: {       //地点
    type: String
  },
  phone: {         //联系方式
    type: String
  },
  desc: {           //内容
    type: String,
    default: ''
  },
  imgList: {        //图片
    type: Array,
    default: ["http://localhost:80/file/ee33fd87-06f9-4e23-ae90-af4594af7cc4.jpg"]
  },
  time: {           //时间戳
    type: Number
  },
  commentList: {     //评论
    type: Array,
    default: []
  },
  claimInfo: {         //认领信息
    // 存mongoose.Schema.Types.Mixed所有的类型，MongoDB没有对象类型
    type: mongoose.Schema.Types.Mixed,
    default: {}
  },
  state: {       //认领状态,0是未认领，1是认领中，2是已认领
    type: Number,
    default: 0
  }
})



// 收藏物品
const CollectionSchema = new mongoose.Schema({
  // 收藏的人
  openid: {
    type: String
  },
  // 使用Schema.Types.ObjectId来将字段设置为ID。Schema.Types.ObjectId是MongoDB的内置类型，用于表示唯一的文档ID,就是不会自动生成一个_id，
  // 收藏的东西，这个id存的是Lose表的_id
  id: {
    // Schema.Types.ObjectId引用其他表格的时候就会使用
    type: mongoose.Schema.Types.ObjectId,
    // ref是引用，查收藏表的id时，是去Lose表里查找相应ID的信息
    ref: 'Lose'
  },
})

// 用户账号
const UserSchema = new mongoose.Schema({
  openid: {
    type: String,
  },
  nickname: {
    type: String
  },
  avatarurl: {
    type: String
  },
  contact: {
    type: String
  }
})

// 意见反馈表
const AdviceSchema = new mongoose.Schema({
  openid: {
    type: String
  },
  phonenumber: {
    type: String
  },
  advice_content: {
    type: String
  },
  create_time: {
    type: Number
  }
})

// --------------------------------------------后台管理系统部分----------------------------------------------------------
// 管理员账号
const AdminSchema = new mongoose.Schema({
  username: {
    type: String
  },
  password: {
    type: String
  },
  role: {
    type: Number
  },
  create_time: {
    type: Number
  },
  nickname: {
    type: String
  }
})


// ------------------------------------------------------------------------------------------------------------------------------

// 将结构转换成模型，就是表格，"Lose"是名字，loseSchema定义数据结构 
const Lose = mongoose.model("Lose", loseSchema);
const Collection = mongoose.model("Collection", CollectionSchema);
const User = mongoose.model('User', UserSchema)
const Advice = mongoose.model('Advice', AdviceSchema)
const Admin = mongoose.model('Admin', AdminSchema)

Admin.create({
  username: 'admin',
  password: '123456',
  role: 0,
  create_time: 1721895221178,
  nickname: 'Renjie'
})


module.exports = {
  Lose,
  Collection,
  User,
  Advice,
  Admin
}

